package com.yuelao.yuelao_backend.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yuelao.yuelao_backend.dto.TaskDTO;
import com.yuelao.yuelao_backend.entity.Task;

import java.util.List;
import java.util.Map;

public interface TaskService extends IService<Task> {

    /**
     * 获取每日任务列表
     * @param userId 用户ID
     * @return 每日任务列表
     */
    List<TaskDTO> getDailyTasks(Long userId);

    /**
     * 获取签到信息
     * @param userId 用户ID
     * @return 签到信息，包括是否已签到、连续签到天数等
     */
    Map<String, Object> getCheckinInfo(Long userId);

    /**
     * 执行签到
     * @param userId 用户ID
     * @return 签到结果
     */
    Map<String, Object> doCheckin(Long userId);

    /**
     * 完成任务
     * @param userId 用户ID
     * @param taskId 任务ID
     * @return 是否成功
     */
    boolean completeTask(Long userId, Long taskId);

    /**
     * 获取成就列表
     * @param userId 用户ID
     * @return 成就列表
     */
    List<TaskDTO> getAchievements(Long userId);

    /**
     * 观看广告获得奖励
     * @param userId 用户ID
     * @return 是否成功
     */
    boolean watchAdvertisement(Long userId);

    /**
     * 获取广告信息
     * @return 广告信息
     */
    Map<String, Object> getAdInfo();

    /**
     * 将 Task 实体转换为 TaskDTO
     * @param task Task 实体
     * @param userId 用户ID (用于判断任务状态)
     * @return TaskDTO
     */
    TaskDTO convertToTaskDTO(Task task, Long userId);

    /**
     * 获取VIP专属任务列表
     * @param userId 用户ID
     * @return VIP任务列表
     */
    List<TaskDTO> getVipTasks(Long userId);
}